﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BookShop.Domain.Abstract;
using BookShop.Domain.Entities;

namespace BookShop.Domain.Concrete
{
    public class BookRepository : IBookRepository
    {
        EFDbContext context=new EFDbContext();
        //IQueryable虽然可以很智能地根据Linq表达式生成相应的SQL语句，但毕竟有一个分析Linq表达式的过程，
        //相对来说性能比IEnumerable要差。那么我们什么时候用IEnumerable，什么时候用IQueryable呢？
        //对于少量的数据（比如从数据库中读取应用程序相关的系统信息）和不需要对数据进行过滤操作的情况，用IEnumerable比较适合；
        //对于数据量较大需要对数据进行过滤（比如分页查询）的情况，则用IQueryable比较合适
        public IQueryable<Book> Books//使用IQueryable，EF是先根据Linq表达式生成相应的SQL语句再执行查询的
        {
            get { return context.Books; }
        }

        //private static List<Book> GetBooks()
        //{
        //    List<Book> books = new List<Book>(){
        //        new Book { ID = 1, Title = "ASP.NET MVC 4 编程", Price = 52},
        //        new Book { ID = 2, Title = "CLR Via C#", Price = 46},
        //        new Book { ID = 3, Title = "平凡的世界", Price = 37}
        //    };
        //    return books;
        //}
    }
}
